tg-me.com/csharp_1001_notes/712
Last Update:
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: cΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π±ΠΎΠ»ΡΡΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΡΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠ·ΡΡΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ²ΡΠΎΡ Π² ΠΊΠ½ΠΈΠ³Π΅ Algorithms and Data Structures for OOP With C# Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ QuickSort β ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
public class QuickSortExample
{
public void QuickSort(int[] arr, int low, int high)
{
if (low < high)
{
int pi = Partition(arr, low, high);
QuickSort(arr, low, pi - 1);
QuickSort(arr, pi + 1, high);
}
}
private int Partition(int[] arr, int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j < high; j++)
{
if (arr[j] < pivot)
{
i++;
(arr[i], arr[j]) = (arr[j], arr[i]);
}
}
(arr[i + 1], arr[high]) = (arr[high], arr[i + 1]);
return i + 1;
}
}
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
β ΠΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ
β Π‘ΡΠ΅Π΄Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n log n)
β ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π·Π° ΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΈ